package com.xbongbong.saas.service;

import com.xbongbong.paas.toolbox.exception.XbbException;
import com.xbongbong.paas.toolbox.wrap.BaseVO;
import com.xbongbong.pro.customerstatement.pojo.dto.StatementCustomerAddDTO;
import com.xbongbong.pro.customerstatement.pojo.dto.StatementSummaryDetailDTO;
import com.xbongbong.pro.customerstatement.pojo.dto.StatementSummaryOperateDTO;
import com.xbongbong.pro.customerstatement.pojo.dto.batch.StatementBatchAddDTO;
import com.xbongbong.pro.customerstatement.pojo.dto.batch.StatementBatchDeleteDTO;
import com.xbongbong.pro.customerstatement.pojo.vo.StatementCustomerAddVO;
import com.xbongbong.pro.customerstatement.pojo.vo.StatementSummaryDetailVO;

import java.util.List;

/**
 * @Description
 * @author: shian
 * @date : 2021/1/8
 */
public interface CustomerStatementStatisticService {

    /**
     * 添加到对账单列表
     * @param statementCustomerAddDTO
     * @return
     * @throws XbbException
     */
    StatementCustomerAddVO generate(StatementCustomerAddDTO statementCustomerAddDTO) throws XbbException;

    /**
     * 对账单详细
     * @param detailDTO
     * @return
     * @throws XbbException
     */
    StatementSummaryDetailVO detail(StatementSummaryDetailDTO detailDTO) throws XbbException;

    /**
     * 对账单操作
     * @param operateDTO
     * @return
     * @throws XbbException
     */
    BaseVO operate(StatementSummaryOperateDTO operateDTO) throws XbbException;

    /**
     * 对账单批量删除
     * @param statementBatchDeleteDTO
     * @throws XbbException
     */
    void deleteBatch(StatementBatchDeleteDTO statementBatchDeleteDTO) throws XbbException;

    /**
     * 暂时用于自动生成对账的创建对账单逻辑
     * @param batchAddList
     * @return
     */
    void createStatement(List<StatementBatchAddDTO> batchAddList);

    /**
     * 一致性同步
     * @param corpid
     * @param dataId
     * @param name
     */
    void dataConsistencyUpdateCustomer(String corpid, Long dataId, String name);
}
